#ifndef CPARSERSTATEMANAGER_H_
#define CPARSERSTATEMANAGER_H_

#include <map>
#include "../logger/clogger.h"

/**
 * CParserStateManager - class representing state manager for parser
 * @author Michal Rost
 * @date 04.05.2008
 */
class CParserStateManager : public CObject {
public:
  CParserStateManager() {
  }
  void addNextStateId(int stateId, int nextStateTokenId, int nextStateId);
  void setFirstStateId(int firstStateId);
  map<int, int> getNextStateIds(int stateId) const;
  int findNextStateId(int stateId, int nextStateTokenId);
  int getFirstStateId() const;
  static string getClassName() {
    return "CParserStateManager";
  }
  static const int STATE_NOTFOUND = -1;
protected:
  map<int, map<int, int> > stateIds;
  int firstStateId;
};

#endif
